

#ifndef MSG_COMMAND_H_
#define MSG_COMMAND_H_

//#define TEST 1
#define MAX_COMMAND_NR 256

//#define NETLINK_HTTCSEC_PROT    24

enum{
	COMMAND_SWITCH_LOG_FILE  = 0x1,
	COMMAND_UPDATE_GLOBAL_POLICY,
	COMMAND_RELOAD_GLOBAL_POLICY,
	COMMAND_ADD_WHITELIST_POLICY,
	COMMAND_DELETE_WHITELIST_POLICY,
	COMMAND_RELOAD_WHITELIST_POLICY,
	COMMAND_UPDATE_DMEASURE_POLICY,
	COMMAND_RELOAD_DMEASURE_POLICY,
	COMMAND_UPDATE_PROCESS_ID_POLICY,
	COMMAND_RELOAD_PROCESS_ID_POLICY,
	COMMAND_UPDATE_PROCESS_ROLE_POLICY,
	COMMAND_RELOAD_PROCESS_ROLE_POLICY,
	COMMAND_UPDATE_LOG_CONFIG_POLICY,
	COMMAND_RELOAD_LOG_CONFIG_POLICY,
	COMMAND_SET_PROCESS_IDS_POLICY,
	COMMAND_RELOAD_PROCESS_IDS_POLICY,
	COMMAND_SET_PROCESS_ROLES_POLICY,
	COMMAND_RELOAD_PROCESS_ROLES_POLICY,

	COMMAND_ADD_DMEASURE_PROCESS_POLICY,
	COMMAND_DELETE_DMEASURE_PROCESS_POLICY,
	COMMAND_RELOAD_DMEASURE_PROCESS_POLICY,

	COMMAND_SET_PTRACE_POLICY,
	COMMAND_RELOAD_PTRACE_POLICY,

	COMMAND_GET_NOTIFY_INFO_BLOCK,
	COMMAND_GET_NOTIFY_INFO_NOBLOCK,
	COMMAND_SEND_NOTIFY_PKG,
	COMMAND_CREATE_NOTIFY_QUEUE,
	COMMAND_SET_NOTIFY_QUEUE_NUM,
	COMMAND_PROCESS_PROTECT_REQ,
	COMMAND_PROCESS_UNPROTECT_REQ,

	COMMAND_CDROM_RELOAD,
	COMMAND_UDISK_QUERY,
	COMMAND_UDISK_MARK,
	COMMAND_UDISK_RELOAD,
	COMMAND_UDISK_RECOVER,
	COMMAND_NET_CONF_CLEAR,
	COMMAND_NET_CONF_RELOAD,

	COMMAND_RELOAD_CRITICAL_CONFILE_POLICY,

	COMMAND_WRITE_USER_LOG,

	COMMAND_READ_MEM_LOG,
	COMMAND_READ_MEM_LOG_NONBLOCK,

	COMMAND_RELOAD_FILE_PROTECT_POLICY,
	//COMMAND_RELOAD_PRIVILEGE_PROCESS_POLICY,

	COMMAND_ADD_FAC_WHITELIST_PATH_POLICY,
	COMMAND_DELETE_FAC_WHITELIST_PATH_POLICY,
	COMMAND_RELOAD_FAC_WHITELIST_PATH_POLICY,

	COMMAND_WRITE_USER_INFO_LOG,

	COMMAND_WHITELIST_USER_INTERFACE = 100,
	COMMAND_DMEASURE_USER_INTERFACE,
	COMMAND_PROCESS_IDENTITY_USER_INTERFACE,


	
	COMMAND_SET_TRUST_SCORE,
	COMMAND_SET_LOG_MODE,
	COMMAND_GET_LOG_MODE,

	COMMAND_MAX = MAX_COMMAND_NR
};


typedef long (* httcsec_io_command_func)(unsigned long param, struct file *filp);
//exported begin
int httcsec_io_command_register(int nr,httcsec_io_command_func func);
int httcsec_io_command_unregister(int nr,httcsec_io_command_func func);
//exported end



//int httcsec_io_send_message(void *data,int length,int type);
//
////netlink
//enum{
//	NL_COMMAND_NETAUTH_RESULT = 0,
//	NL_COMMAND_NETAUTH_BYPASS,
//	NL_COMMAND_SIZE=256
//};
//typedef int (*COMMAND_HANDLER_NL)(void *input,int length,void *output,int *olen);
//int httcsec_io_command_register_nl(int command,COMMAND_HANDLER_NL handler);
//void httcsec_io_command_unregister_nl(int command);

#endif /* MSG_COMMAND_H_ */
